System and Method for Automatically Scheduling Group Appointments

ABSTRACT

The system and method for automatically scheduling appointments includes obtaining group appointment preference information for an appointment group. The appointment group includes a plurality of users who are members of the appointment group. After obtaining the group appointment preference information scheduling, based on the group appointment preference information, a plurality of concurrent appointments associated with the appointment group including a first appointment and a second appointment and sending invitations to the plurality of appointments to members of the appointment group. Sending the invitations includes: sending, to a first subset of users who are members in the appointment group, invitations to a first appointment at a first appointment time; and sending, to a second subset users who are members in the appointment group, invitations to a second appointment at a second appointment time, where the first appointment time at least partially overlaps the second appointment time.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.12/465,595, filed May 13, 2009, entitled “System and Method forAutomatically Scheduling Appointments,” which is incorporated herein byreference in its entirety.

TECHNICAL FIELD

The claimed system and method relate generally to the field ofappointment scheduling, and more specifically to the field ofcomputerized automatic appointment scheduling using electronic messages.

BACKGROUND

On average, people work near about 20 people who they would like to seemore frequently than they do. The top reasons that people cite for notseeing nearby contacts and colleagues more frequently is that 1) theyfind it difficult to coordinate and 2) they simply forget. As a resultof not seeing contacts as frequently, people lose touch with thesecontacts. Thus, there is a need for a service which automaticallycoordinates appointments between a user and those contacts with whom theuser would like to stay in better touch.

SUMMARY OF EMBODIMENTS

The above deficiencies and other problems associated with coordinatingappointments between a plurality of appointment participants areaddressed by the system and method disclosed herein for automating thescheduling of periodic meetings, such as lunches, with contacts andcolleagues. For some embodiments of the invention, the periodic meetingsinclude other types of social occasions, such as dinners, breakfasts,brunches, coffee dates, happy hours, nights on the town, children's playdates, or any other periodic activity where it is convenient to haveappointments automatically scheduled (e.g., in situations where complexlogistics make planning difficult). In some embodiments periodicmeetings are arranged between the user and parties unknown to the userbased on common interests (e.g., political groups and alumni groups). Insome embodiments, in order to more fully automate the scheduling ofthese meetings, the disclosed system and method takes into accountfactors such as when the participants (e.g., the user and the contactsof the user who are invited to the appointment) are available, what theparticipants' travel preferences are, preferences for a particularlocation, and how frequently the users desire to see each other.

In some embodiments, a web-based application automatically organizesperiodic appointments between a plurality of participants. In someembodiments, the appointments are dining-based events such as lunches,dinners, Sunday brunches, coffee get-togethers, or breakfasts. In someembodiments, the appointments are for other types of events and socialoccasions such as regular evenings out with a particular group ofcontacts or periodic sports spectator events.

In some embodiments, an appointment server system receives appointmentpreference information from a client system associated with a user,wherein the appointment preference information includes contact detailsfor one or more contacts of the user. In response to receiving theappointment preference information from the user, the appointment serversystem automatically, without human intervention, schedules a firstproposed appointment based at least in part on the appointmentpreference information, wherein the first proposed appointment includesa first location, a first plurality of participants including the userand a first contact of the one or more contacts, and a first date thatwas not selected by any of the first plurality of participants. Inaccordance with this embodiment, the appointment server system sends anelectronic message to the first plurality of participants including aninvitation to the first proposed appointment.

In some embodiments, scheduling a first proposed appointment based atleast in part on the appointment preference information includessearching a database to determine previously defined appointmentpreference information including appointment preference informationassociated with the user and, appointment preference informationassociated with the contact. In some embodiments, the first dateincludes a time of day.

In some embodiments, in response to receiving the appointment preferenceinformation from the user, the appointment server system automatically,without human intervention, schedules a second proposed appointmentbased on the appointment preference information, wherein the secondproposed appointment includes a second location, a second plurality ofparticipants including the user and a second contact of the one or morecontacts, and a second time that was not selected by any of the secondplurality of participants, wherein the second proposed appointment isnot a recurrence of the first proposed appointment. In accordance withthis embodiment, the appointment server system sends an electronicmessage to the second plurality of participants, including an invitationto the second proposed appointment.

In some embodiments, in response to receiving the appointment preferenceinformation from the user, the appointment server system automatically,without human intervention, schedules a plurality of proposedappointments based on the appointment preference information, whereineach respective proposed appointment in the plurality of proposedappointments includes a respective location, a respective plurality ofparticipants including the user and a second contact of the one or morecontacts, and a respective time that was not selected by any of therespective plurality of participants, wherein each proposed appointmentis not a recurrence of any of the plurality of proposed appointments. Inaccordance with this embodiment, for each proposed appointment, theappointment server system sends an electronic message to the respectiveplurality of participants, including an invitation to the secondproposed appointment.

In some embodiments, the appointment server system receives a reply fromat least a subset of the first plurality of participants. In response toreceiving the replies, when replies indicating an acceptance of thefirst proposed appointment have been received from a predefined numberof the participants, the appointment server system sends electronicmessages to the plurality of participants including a confirmation ofthe first proposed appointment. In some embodiments, the appointmentserver system sends a message to a restaurant reservation service andreceiving a response confirming the reservation.

In some embodiments, the appointment server system receives a reply fromat least a subset of the first plurality of participants. In response toreceiving the replies, when replies indicating a rejection of the firstproposed appointment have been received from a predefined number of theparticipants, the appointment server system sends electronic messages tothe plurality of participants including a cancellation of the firstproposed appointment. In some embodiments, the appointment server systemreceives a reply from at least a subset of the first plurality ofparticipants; and in response to receiving the replies, when repliesindicating an acceptance of the first proposed appointment have not beenreceived from a predefined threshold of the participants before apredefined time period has elapsed, the appointment server system sendselectronic messages to the one or more of the first plurality ofparticipants including a cancellation of the first proposed appointment.

In some embodiments, in response to the receiving appointment preferenceinformation from the user, the appointment server system sends anelectronic message to the user including a placeholder calendar entryindicative of the appointment preference information provided by theuser.

In some embodiments, the first plurality of participants includes atleast one participant that is not included in the second plurality ofparticipants. In some embodiments, appointment preference informationincludes information that was collected from third party websites. Insome embodiments, appointment preference information includes one ormore of: an availability of the user including a plurality of times whenthe user is available for an appointment, a user location, a user ratingof one or more of the participants, travel preferences of one or more ofthe participants, appointment location preferences of one or more of theparticipants, dietary restrictions/preferences of one or more of theparticipants.

In some embodiments, the appointment server system prepares for displayto the user an invitation to the first proposed appointment; andprepares for display to a contact of the user an invitation to the firstproposed appointment. In some embodiments, the appointment server systemreceives a reply from a participant; and in response to receiving thereply, the appointment server system updates the appointment preferenceinformation for the user. In some embodiments, the electronic messagesent to a first participant of the plurality of participants includes anindication of a first travel time of the first participant to the firstlocation; and the electronic message sent to a second participant of theplurality of participants includes an indication of a second travel timeof the second participant to the first location. In some embodiments,the indication of the travel time of a respective participant of theplurality of participants to the first location includes a calendarappointment with a start time that is the first time adjusted by atravel time of the participant to the first location.

In some embodiments, prior to automatically scheduling the firstproposed appointment, the appointment server system receives, at a firstappointment server system, from a mobile device, location informationindicative of the location of the user and stores appointment preferenceinformation indicative of the likely location of a user.

Thus, the system and methods described herein reduce or eliminate thedeficiencies associated with conventional systems and methods forcoordinating appointments between a user and those contacts andcolleagues with whom the user would like to stay in better touch. Otheradvantages of embodiments will be apparent from the accompanyingdrawings and from the detailed description that follows.

BRIEF DESCRIPTION OF THE DRAWINGS

For a better understanding of the nature and embodiments of theinvention, reference should be made to the Description of Embodimentssection below.

FIG. 1 is an overview of a distributed client-server system inaccordance with some embodiments.

FIG. 2 is a block diagram illustrating an appointment server system inaccordance with some embodiments.

FIG. 3 is a block diagram illustrating a client system in accordancewith some embodiments.

FIGS. 4A-4B are a flow diagram illustrating a process for automaticallyscheduling appointments in accordance with some embodiments.

FIGS. 5A-5F are flow diagrams illustrating a process for scoring variouscomponents for use in automatically scheduling appointments inaccordance with some embodiments.

FIG. 6A is a chart showing frequency settings for use in automaticallyscheduling appointments in accordance with some embodiments.

FIG. 6B is an exemplary formula for calculating frequency settings foruse in automatically scheduling appointments in accordance with someembodiments.

FIGS. 7A-7D illustrate an exemplary user interface for providingappointment preference information in accordance with some embodiments.

Like reference numerals refer to corresponding parts throughout thedrawings.

DESCRIPTION OF EMBODIMENTS

Reference will now be made in detail to embodiments, examples of whichare illustrated in the accompanying drawings. In the following detaileddescription, numerous specific details are set forth in order to providea thorough understanding of the embodiments. However, it will beapparent to one of ordinary skill in the art that the embodiments may bepracticed without these specific details. In other instances, well-knownmethods, procedures, components, and circuits have not been described indetail so as not to unnecessarily obscure aspects of the embodiments.

Attention is now directed to FIG. 1, which illustrates theinfrastructure of a client-server distributed system 100 according tosome embodiments. The distributed system 100 includes a plurality ofclient systems 102 A-D and one or more appointment server systems 106,one or more internet service providers 120, one or more mobile phoneoperators 122, and one or more web servers 130 (e.g., social networkingsites). These components are linked together through one or morecommunication networks 104 (e.g., the Internet, other wide areanetworks, local area network, etc.) so that the various components cancommunicate with each other.

A client system 102 may be any computer or similar device that iscapable of receiving from the appointment server system 106 data (e.g.,web pages, electronic messages, emails, calendar invitations),displaying data, and sending requests (e.g., web page requests, searchqueries, information requests, login requests, etc.) to the appointmentserver system 106, the internet service provider 120, the mobile phoneoperator 122, or the web server 130. Examples of suitable client systems102 include, without limitation, desktop computers, notebook computers,tablet computers, mobile devices such as mobile phones, personal digitalassistants, and set-top boxes. In some embodiments, the term “web page”means any data (e.g., text, image, audio, video, java scripts, etc.)that may be used by a web browser or other client application programs.In some embodiments a web page includes one or more web applications(e.g., an executable application that can be accessed through a webbrowser over a network).

Requests and other information from a client system may be conveyed to arespective appointment server system 106 using the http protocol (e.g.,by using http requests). In some embodiments, the client systems 102 maybe connected to the communication network using cables such as wires,optical fibers and other transmission mediums. In other embodiments, theclient systems 102 may be connected to the communication network throughone or more wireless networks using radio signals or the like.

In some embodiments, the one or more appointment server systems 106(e.g., facilitating a scheduling service) comprise a single server. Inother embodiments the appointment server systems 106 include a pluralityof servers, such as a front end server 106-A one or more applicationservers 106-B and one or more database servers 106-C which are connectedto each other through a network (e.g., a LAN, WAN or the like) andexchange information with the client systems 102 through a commoninterface (e.g., front end server 106-A). In some embodiments, theservers are located at different locations. The front end server 106-Aparses requests from the client systems 102, fetches corresponding webpages, electronic messages or other data from the application server106-B and returns the web pages, electronic messages or other data tothe requesting client system(s) 102. Depending upon their respectivelocations in the topology of the client-server system, the front endserver 106-A and the application server 106-B are merged into onesoftware application and/or hosted on one physical server.

The distributed system may also include one or more additionalcomponents that are connected to the servers systems 106 and the clientsystems 102 through the communication network 104. In some embodiments,the internet service provider 120 provides one or more of the clientsystems 102 with access to the communication network 104. In someembodiments the internet service provider 120 provides a user of one ofthe client systems 102 with one or more network communication accounts(e.g., email accounts). The mobile phone operator 122 provides access tothe communication network 104 to various client systems 102 (e.g.,through a proprietary cell phone network).

In some embodiments, the web server 130 is a social networking website,or the like. In these embodiments, a user of one of the client systems102 has an account with the social networking website including at leasta unique user identifier. In accordance with some embodiments,information gathered from the social networking site is used to assistin automatically scheduling appointments by the appointment serversystem 106. For example, in some embodiments the connection of a user tovarious contacts through one or more social networking websites areanalyzed by the appointment server system 106 and used to automaticallyselect participants for a proposed appointment. Additionally,information such as the number of social connections of the user to acontact in the user's social network or the location of a user or acontact of the user may be acquired from the social networking websiteand be used by the appointment server system 106 to determine whetherthe contact should be a participant in the appointment. In someembodiments the web server 130 is an appointment location rating website(e.g., YELP) and is used to select a location for a proposedappointment. For example, in some embodiments, restaurant reviews aretaken from a restaurant review website and used to determine thelocation for a meal-time appointment (e.g., a lunch).

FIG. 2 is a block diagram illustrating an appointment server system 106in accordance with one embodiment. The appointment server system 106typically includes one or more processing units (e.g., CPUs) 204, one ormore power sources 208, one or more network or other communicationsinterfaces 210, memory 206, one or more communication buses 216 forinterconnecting these components, and a housing 218. The appointmentserver system 106 optionally may include a user interface comprising adisplay device 212 and/or a keyboard and a mouse 214. The memory 206includes high-speed random access memory, such as DRAM, SRAM, DDR RAM orother random access solid state memory devices; and may includenon-volatile memory, such as one or more magnetic disk storage devices,optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. The memory 206 may optionallyinclude one or more storage devices remotely located from the one ormore CPUs 204. The memory 206, or alternately the non-volatile memorydevice(s) within the memory 206, comprises a computer readable storagemedium. In some embodiments, the memory 206 or the computer readablestorage medium of the memory 206 stores the following programs, modulesand data structures, or any subset thereof:

-   -   An operating system 220 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks.    -   A network communication module 222 that is used for connecting        the appointment server system 106 to other computers via the        communication network interfaces 210 (wired or wireless) and one        or more communication networks, such as the Internet, other wide        area networks, local area networks, metropolitan area networks,        and so on.    -   A scoring module 224 that is used for ranking and selecting        various ones of: a time, a location and participants for a        respective appointment.    -   A website information extractor module 226, for retrieving        information about a respective user from websites that include        information about the user, including participant preferences        (e.g., from a social networking website) and location        preferences (e.g., from a restaurant rating website). For        example, the website information extractor may operate by        getting contacts from FACEBOOK and getting food preferences from        YELP.    -   An invitation generator module 228 for generating electronic        messages including an invitation to one or more proposed        appointments(s). In some embodiments the invitation generator        module 228 includes one or more of the following modules: a        calendar interface module 230 for creating electronic        appointment invitations in a file compliant with the .ics or        .vcs calendaring information format standards (e.g., by        creating/sending OUTLOOK appointments); a response monitor 232        for monitoring the number of confirmed attendees and sending        reminders, confirmations and cancellations, as discussed in        greater detail below; and a map module 234 for providing        directions from the location of a user to the location of the        appointment.    -   Local storage 236 for storing appointment preference information        for users 238, including time/date availability 239, activity        preferences 240, typical locations and/or location preferences        241, rankings of contacts 242 and travel preferences, calendar        information 244, proposed appointments 245, and the response        statuses 246 of participants for the proposed appointments 245;        and    -   A cache 248 for storing data such as intermediate scores 250        that are calculated while the scoring module is selecting a        time, location or participants for a respective appointment, as        well as score coefficients 252 for selectively weighting the        intermediate scores as described in greater detail below.

Each of the above identified programs, modules and/or data structuresmay be stored in the previously mentioned memory, and corresponds to aset of instructions for performing the functions described above. Theabove identified modules or programs (i.e., sets of instructions) neednot be implemented as separate software programs, procedures or modules,and thus various subsets of these modules may be combined or otherwisere-arranged in various embodiments. In some embodiments, the memory 206may store a subset of the modules and data structures identified above.Furthermore, the memory 206 may store additional modules and datastructures not described above.

FIG. 3 is a block diagram illustrating a client system 102 in accordancewith one embodiment. The client system 102 typically includes one ormore processing units (CPUs) 304, one or more power sources 308, one ormore network or other communications interfaces 310, memory 306, one ormore communication buses 316 for interconnecting these components, and ahousing 318. The client system 102 optionally may include a userinterface devices including a display device 312 and a keyboard andmouse 314 or a touch sensitive surface. The memory 306 includeshigh-speed random access memory, such as DRAM, SRAM, DDR RAM or otherrandom access solid state memory devices; and may include non-volatilememory, such as one or more magnetic disk storage devices, optical diskstorage devices, flash memory devices, or other non-volatile solid statestorage devices. The memory 306 may optionally include one or morestorage devices remotely located from the CPU(s) 304. The memory 306, oralternately the non-volatile memory device(s) within the memory 306,comprises a computer readable storage medium. In some embodiments, thememory 306 or the computer readable storage medium of the memory 306stores one or more of the following programs, modules and datastructures, or a subset thereof:

-   -   An operating system 320 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks.    -   A network communication module 322 that is used for connecting        the client system 102 to other computers via the one or more        communication network interfaces 310 (wired or wireless) and one        or more communication networks, such as the Internet, other wide        area networks, local area networks, metropolitan area networks,        and so on.    -   A web browser 324, for receiving a user request for a web page        and rendering the requested web page on the display device 312        or other user interface device, in some embodiments the web        browser includes a web application 326 for the execution of        appointment scheduling tasks.    -   An appointment scheduler module 328 for the execution of        appointment scheduling tasks (e.g., a locally stored application        instead of a web application such as MICROSOFT's OUTLOOK        calendaring program).    -   A location module 330 for detecting the location of the client        system (e.g., using a global positioning system module) and        periodically reporting the location of the client system to the        appointment server system (e.g., sending the appointment server        system the location of the client system at a typical lunch        time, so that the appointment server system can use that        information when scheduling a lunch appointment for the user).    -   A cache 332 for temporarily storing information (e.g., storing        location information before it is sent to the appointment server        system).

FIGS. 4A-5F are flowcharts representing a method for automaticallyscheduling appointments for one or more users, according to certainembodiments. This method may be governed by instructions that are storedin a computer readable storage medium and that are executed by one ormore processors of one or more servers. Each of the operations shown inFIGS. 4A-5F may correspond to instructions stored in a computer memoryor computer readable storage medium. The computer readable storagemedium may include a magnetic or optical disk storage device, solidstate storage devices such as Flash memory, or other non-volatile memorydevice or devices. The computer readable instructions stored on thecomputer readable storage medium are in source code, assembly languagecode, object code, or other instruction format that is interpreted byone or more processors.

Appointment Preference Information

Attention is directed towards FIGS. 4A-4B, which illustrate a processfor automatically scheduling appointments in accordance with someembodiments. An appointment server system 106 receives (401) sign-up orlog-in request from a client system 102 associated with a first user. Asign-up request is a request from a new user to create a user accountwith the appointment server system 106. A log-in request is a requestfrom a returning user who has already signed up to access a previouslycreated account with the appointment server system 106. In someembodiments the client system 102 is a computing device associated witha user (e.g., a cell phone or a personal digital assistant) in someembodiments the client system 102 includes an instance of a clientapplication (e.g., a web application or a locally stored application)that the associated user is logged into.

In some embodiments, sign-up or log-in request includes profileinformation (404) (e.g., a unique user identifier such as an emailaddress and password associated with an account of the user on theserver system). In some embodiments, the user also provides multipleidentifiers including one or more emails, one or more phone numbers, orone or more third party usernames to services such as SKYPE, YAHOOINSTANT MESSENGER, and other communication channels. The server systemmay use these identifiers to access web servers associated with thethird party services and acquire information about the user includinginformation about the user's contacts, location or dining preferences.Alternatively, the appointment server system may also rely on identityservices such as FACEBOOK CONNECT in order to uniquely identify theuser.

In some embodiments the appointment server system 106 receives (403)appointment preference information from the client system 102 associatedwith the first user. The appointment preference information alsoincludes contact details (406) for one or more contacts of the firstuser. In some embodiments, the user identifies contacts (e.g., friends,colleagues, professional contacts, and other individuals) with whom theuser would like to remain in touch by having periodic appointments(e.g., lunches). This process may include any of the following: 1)collecting email addresses manually typed in by the user, or 2) allowingthe user to provide credentials to an online address book, emailprogram, or social network, then allowing the user to select contactsfrom that service, or 3) allowing the user to select contacts storedwithin the client system, such as an OUTLOOK contacts program or mobilephone address book. In an alternative embodiment, the user may providethe phone numbers of contacts and colleagues instead of entering emailaddresses. The user's list of contacts and colleagues are considered bythe scoring process as described in greater detail below with referenceto FIGS. 5A-5F.

In some embodiments, all of the appointment preference information isgathered directly from the user (e.g., entered by the user into anappointment scheduling website or client application). It should beunderstood that appointment preference information is information thatis helpful in scheduling a meeting (e.g., availability, locationpreferences, participant preferences). In contrast, appointmentscheduling information for a particular appointment includes the precisedate, participants and location for a specific appointment (i.e., arequest to schedule a lunch with a friend next Tuesday).

In some embodiments, at least a subset of the appointment preferenceinformation is gathered from one or more additional sources other thanthe user. For example, the user could enter profile information (e.g., aunique user identifier and a password) for one or more web services(e.g., email, social networking websites, restaurant ranking websites)and the appointment server system will access those websites anddetermine the contacts of the user, the ranking of contacts of the user,and the ranking of restaurants by the user. At least a subset of theinformation acquired from third party web services is used by theappointment server system to select times, locations and participantsfor an appointment that are desirable for the user, as described ingreater detail below with reference to FIGS. 5A-5F.

In accordance with some embodiments, the appointment preferenceinformation 238 includes additional information that is useful forscheduling appointments, such as information from one or more of thefollowing categories:

User data/time availability information (408) (e.g., the times of dayand/or days of the week that the user is typically available or thetimes and dates when the user is available for appointments) includingat least a plurality of times when the user is available. An exemplaryuser interface for indicating availability is shown in FIG. 7A. In someembodiments availability for appointments is indicated by any date/timethat has not been marked by a user as “unavailable.” In someembodiments, the user indicates what their availability will be for anappointment (e.g., a lunch appointment). If the appointment serversystem does not yet have the user's time zone and it is unable todetermine this information from the client system associated with theuser, then it will solicit this information from the user. The pluralityof times when the user is available may be represented as a periodicinterval such as “every other Wednesday,” the user may also selectindividual dates and times when they will be available for anappointment.

In some embodiments, a first user accesses the appointment server systemand provides (402) appointment preference information to the appointmentserver system. In response to the receiving appointment preferenceinformation from the first user, the appointment server system sends anelectronic message to the first user including a placeholder calendarentry based at least in part on the appointment preference informationprovided by the first user (e.g., for a date/time when the first user isavailable). If the first user uses an electronic calendar which supportsthe vcal format, such as OUTLOOK, GOOGLE CALENDAR, or APPLE ICAL, thenplaceholders are sent by the appointment server system 106 to the user'selectronic calendar via a multipart email or text message which includesa vcal or ical attachment. The vcal or ical in the electronic messageallows the electronic calendar to automatically update the user'scalendar with the appointment placeholder information. Theseplaceholders ensure that the user's appointment date/time is reserved.The user may also indicate that they do not use an electronic calendar,in which case, no placeholders are sent.

In some embodiments, the user allows the appointment server system toview their online appointment calendar in order to facilitate orautomate the availability selection. In some embodiments, the calendarsharing is enabled through one or more of the following methods,including: (1) a user sharing their authentication credentials for theironline calendar, (2) a user installing a client-side program such as anOUTLOOK plug-in, (3) the user enabling sharing with the appointmentserver system from within their calendar program, or (4) a user settinghis electronic calendar to publish or broadcast his availability to theappointment server system 106. Additionally, if a user's electroniccalendar reveals the availability of contacts of the user (e.g., friendsand colleagues), then the appointment server system 106 can use thisinformation to populate information about the user's contact. Forexample, an OUTLOOK plug-in may be designed such that the plug-inaccesses the availability of work colleagues on a common MICROSOFTExchange Server. As another example, some of the user's contacts mayshare their availability with the user through GOOGLE CALENDAR's sharingfunctionality; in these cases, the appointment server system may analyzethe availability of those contacts. The user's availability isconsidered by the scoring process as described in greater detail belowwith reference to FIGS. 5A-5F.

User activity preference information (410) (e.g., the types ofactivities that the user enjoys). In some embodiments, the user providesinformation about the user's interests in addition to, or instead of,providing a list of contacts as listed above. The appointment serversystem may request specific information from the user, or may ask theuser to give permission and any necessary authentication credentials sothat the appointment server system may collect or infer the user'sinterests from an online service, such as a social networking website.Interests may include things such as dating, profession-relatedinterests, hobbies, and the like. The user's interests are considered bythe scoring process as described in greater detail below with referenceto FIGS. 5A-5F.

User typical location(s) (412) (e.g., the usual location of the user atlunch time). In accordance with some embodiments, the user providesinformation about where the user is typically located at different timesin the day or days in the week (e.g., the location of their workplace atlunchtime). Alternatively, if the user is using the appointment serversystem through a client system which supports location-awareness, suchas an IPHONE with GPS, then the appointment server system may infer theuser's location information using the GPS information. The appointmentserver system may support more than one location for the user. Forexample, if the location information provided either by the user or theclient system indicates that the user typically spends Fridays workingfrom home, then the appointment server system will propose lunches onFridays which are closer to the user's home. The user's location orlocations are considered by the scoring process as described in greaterdetail below with reference to FIGS. 5A-5F.

User preferred appointment location(s) (414) (e.g., restaurants wherethe user likes to eat lunch). In some embodiments, the appointmentserver system will retrieves a list of restaurants near the user'slocation and ask the user to indicate their desire to eat at theseestablishments. An exemplary user interface for indicating appointmentlocation preference is shown in FIG. 7B. Information on nearbyrestaurants may be provided by a service such as YELP or GOOGLE LOCAL.The appointment server system may allow the user to retrieve theirrestaurant preferences with another service where the user may haverated and reviewed restaurants, such as YELP. For example, assume that agiven user has actively used the YELP service to rate restaurants in herarea. The user provides a YELP username, which the appointment serversystem can use to extract the user's restaurant ratings from the YELPwebsite. If the restaurant rating service provides other means to accessits user's ratings, such as an Application Programming Interface (API),then the appointment server system may use those other means as well.The user's preferred appointment locations are considered by the scoringprocess as described in greater detail below with reference to FIGS.5A-5F.

User ranking of contacts (416) such as by specifying a desiredappointment frequency (e.g., how frequently the user would like to meeteach of his or her contacts for lunch). An exemplary user interface forindicating appointment frequency preferences for a contact is shown inFIG. 7C. In some embodiments, the appointment server system provides anoption for the user to rate their contacts (e.g., friends andcolleagues) according to how often the user would like to schedule anappointment with them. For example, a user may select: “never”,“rarely,” “often,” or “one appointment only”. This same methodology canbe applied to groups. For example, a user may select to haveappointments with his or her political group “rarely.” For interests,the user may be asked to rate the importance of these interests (e.g.,political appointments=“once a quarter,” lunch appointments=“once everyother week,” wine tasting appointments=“twice a week”). The user'sratings of contacts, groups, and interests are considered by the scoringprocess as described in greater detail below with reference to FIGS.5A-5F.

User travel preferences (418) (e.g., how far the user is willing totravel to meet with a contact for lunch). In some embodiments, theappointment server system 106 allows the user to specify preferencesaround how often the user is willing to travel. An exemplary userinterface for indicating travel preferences is shown in FIG. 7D. Thisembodiment asks the user to specify a radius that they are willing totravel various distances, although it would be readily apparent to onehaving ordinary skill in the art that other divisions of timingcategories could also be used. For example, a user can indicate thatthey are “always willing to travel 1 mile”, “sometimes willing to travel10 miles”, and “rarely willing to go as far as 25 miles”. Theappointment server system then takes these considerations into accountso that a user does not need to travel farther than 10 miles for morethan 20% of their appointments. The defaults for these distances canchange depending on the user's location so that New York uses a muchsmaller radius for each category, while Phoenix uses a larger radius foreach category. For some alternate embodiments, the appointment serversystem may obtain these preferences through other means, such as askingwhether the user has a car or other method of transportation at aparticular time of day (e.g., lunchtime). The user's travel preferencesare considered by the scoring process as described in greater detailbelow with reference to FIGS. 5A-5F.

It should be understood that any information that would be useful forscheduling an appointment may also be included here, such as userdietary restrictions or dietary preferences, etc.

In accordance with some embodiments, the appointment preferenceinformation also includes appointment preference information received(420) from a second user and one or more additional users. It should beunderstood that the appointment preference information associated withthe second user, or any other user, may be of the types previouslydescribed, and may be received by the appointment server system 106 byany of the previously described methods. In some embodiments, the seconduser is a contact of the first user and the appointment preferenceinformation includes a rating of the second user by the first user(e.g., Mike is a contact of John, Mike has rated John and John has ratedMike). In some embodiments, when two or more of the participants orusers for a proposed appointment each have associated appointmentpreference information, the appointment preference information for eachof the participants is used to determine the details of the proposedappointment. For example, if the first user likes restaurant A andrestaurant B and does not like restaurant C, while the second user likesrestaurant D and restaurant B, but does not like restaurant A, then aproposed appointment (e.g., a lunch) including both the first user andthe second user will be scheduled at restaurant B, rather thanrestaurant A or restaurant D.

In some embodiments, the appointment server system is configured toschedule proposed group appointments (e.g., appointments including aplurality of participants from a predefined group of users). Inaccordance with some embodiments, the appointment server system 106allows users to join or form appointment groups, either to facilitatesmall appointments among subsets of the users in the group, or tofacilitate appointments for the group as a whole (e.g., all of the usersin the group). In some embodiments the group owner specifies the idealnumber of participants for an appointment; the ideal appointmentfrequency; whether concurrent appointments are permitted as might beneeded for larger groups; whether the group moderator needs to beinvited to all group appointments; if there are any specific geographicbounds for the group (e.g., that all events take place in Sunnyvale);whether there are any specific timing constraints (e.g., a specific dayof the month that must be adhered to for appointments).

For example, a user might create local political appointment groups sothat local members of a large political organization can get to know oneanother better in small working groups of 4-6 people. To continue theexample, once per quarter, the appointment server system would arrange20 concurrent appointments in and around Chicago for members of thispolitical organization. To exemplify how a small appointment group mightuse the appointment server system, a group of 10 individuals might allbe invited to a monthly appointment (e.g., lunch). However, because theappointment server system attempts to gather information on individuallocations and availability, and measures individual response rates overtime, the appointment server system is better able to propose the mostconvenient locations for those members who are likely to attend anyparticular meeting. The user's group affiliations are considered by thescoring process as described in greater detail below with reference toFIGS. 5A-5F.

After receiving the appointment preference information (420) (e.g., inresponse to receiving the appointment preference information), in someembodiments, the appointment server system automatically, without humanintervention, schedules (422) a first appointment for the user based atleast in part on the gathered appointment preference information,wherein the first proposed appointment includes a first location, afirst plurality of participants including the first user and a firstcontact of the one or more contacts of the first user, and a first datethat was not selected by any of the first plurality of participants. Itshould be understood that, in accordance with some embodiments, anappointment time refers to a unique date and time combination (e.g.,Wednesday, Apr. 15, 2009 at 12:30 pm PDT).

In accordance with some embodiments, scheduling a first proposedappointment based at least in part on the appointment preferenceinformation includes searching a database to determine previouslydefined appointment preference information including appointmentpreference information associated with the first user and, appointmentpreference information associated with the contact. For example, thetime, location and participants included in the proposed appointment maybe selected by the appointment server system based on the ratings of afirst participant and a second participant for each other, thewillingness of each participant to travel and the meeting locationpreferences of each participant.

Scheduling Process

The process of automatically, without human intervention, schedulingappointments begins by looking at the availability of each user asindicated by the user's profile. In some embodiments this process starts(424) with the user who has the least availability. If there is noinformation on the availability of a user, then the user's availabilitymay be set to a predetermined default value (e.g., “always available” or“once a week”). For that user, the appointment server system will revieweach of the user's contacts in descending order of the user-contactscore, as described in greater detail below with reference to FIGS.5A-5F.

In some embodiments, the appointment server system identifies (426) oneor more contacts of the user with the highest user-contact score (e.g.,the contact is the highest ranked contact, or the contact has a rankingof “schedule appointments frequently”) and selects a user-contact pairas participants in the proposed appointment. In some embodiments anappointment includes additional participants (i.e., a groupappointment), as discussed in greater detail below. It should beunderstood that, in some embodiments, because the scheduling process isdependent on the scoring process, it must be run after the user-contactscore pairs have been updated through the scoring process, as describedin greater detail below with reference to FIGS. 5A-5F. It should also benoted that, by reviewing each of the user's contacts in descending orderof the user-contact score, the best matches will be considered first. Insome embodiments, the appointment server system will stop schedulingappointments for a user once it runs out of available dates within apredetermined timeframe (e.g., 28 days) or once it runs out of potentialappointment participants (e.g., contacts of the user).

The appointment server system automatically identifies one or more datesfor the proposed appointment. In some embodiments, the first step inthis review is to identify a suitable date for the participants to meetfor their appointment by identifying (428) a date with the highest scoreassigned to it through the scoring process described in greater detailbelow with reference to FIGS. 5A-5F. The appointment server systemidentifies a suitable date by checking to see if there is an availabledate within a predefined time period (e.g., 3-28 days from the currentday) that is available for all of the participants. In some embodiments,after a tentative date is selected, the date scoring process is re-runto make sure that nothing changed which might cause the appointment tobe cancelled, such as a user has changed their availability. Assumingthe date score is positive (e.g., the date is available for all proposedparticipants), then, in some embodiments, the appointment server systemsets a response deadline, such as three working days from the date thatthe meeting invitation is sent. If the score for a particularuser-contact pair is zero, then the appointment server system will notschedule an appointment for that pair. For example, in accordance withthis embodiment, if User A is only available for lunch on Tuesdays andUser B is only available for lunch on Wednesdays, then User A and User Bdo not share any availability, and the user-contact pair score is zero,meaning that the appointment server system will not try to schedule alunch between User A and User B.

In some embodiments, the appointment server system automatically selects(430) a location for the appointment. In accordance with someembodiments, the location selection process begins by identifying ageneral location for the appointment (also called an epicenter) usingthe location of each of the participants and the willingness to travel.For example if user A is located 10 miles from user B, and user A iswilling to travel 8 miles, while user B is only willing to travel 3miles, the appointment server system will identify an “epicenter” forthe appointment that is 2-3 miles away from user B and 7-8 miles awayfrom user A. For example, in one embodiment, when the participants'travel preferences are the same, the epicenter is a midpoint forparticipants who are more than 20 miles apart. In some embodiments, whenthe distance between the location of two users is less than apredetermined distance (e.g., 20 miles), the appointment server systemselects one user's location as the epicenter, which effectively reducesthe travel distance for the user who has their location selected as theepicenter.

In some embodiments, the appointment server system changes which user isbenefited by the location of the epicenter based on the amount oftraveling of the user to other appointments. For example, for aparticular user-contact pair, the appointment server system mayalternate which user travels farther by using the location of the useras the epicenter for even numbered meetings and the location of thecontact for odd numbered meetings. In some embodiments, the appointmentserver system looks at the total distance traveled by the user in agiven time period for appointments arranged by the appointment serversystem. As one example, a user has traveled a total of 50 miles for 4appointments in the last month, a contact of the user has traveled atotal of 5 miles for 4 meetings in the last month. In this example, theappointment server system will use the location of the user as theepicenter rather than the location of the contact, because the user hastraveled greater distance recently.

After determining the epicenter, the appointment server system looks forappointment locations (e.g., a restaurant for a lunch appointment)within a given radius of the epicenter. In some embodiments, the type ofappointment location (e.g., restaurant, coffee shop, state park, bar,etc.) selected by the appointment server system depends on the type ofappointment. For example, a lunch meeting would be scheduled at arestaurant, while a pet-walking date would be scheduled at a dog park,and an after-work appointment would be scheduled at a bar.

In some embodiments, a travel radius is determined by looking at thetravel preferences of the participant closest to the epicenter, or byusing a ratio of the distance to the midpoint among the participants. Insome embodiments, selection of an appointment location relies at leastin part on users' declared preferences for different locations,considering factors such as how often the user has been scheduled for anappointment (e.g., a lunch) at a given location (e.g., a restaurant),how strongly the user prefers a given location, what the compatibilityis between the respective participants' preferences for locations, howfar the location is from the intended epicenter, and the like. In someembodiments, if the search for locations is unable to find a suitablelocation for the appointment from among the users' preferences, it willturn to appointment location rating service such as YELP or GOGGLELOCAL, such as by using the Application Programming Interfaces (APIs)supplied by those services. It should be understood that if theappointment server system does not have location preference informationfor one or more of the users, then the appointment server system canselect a location based on criteria that are not specific to any of theusers (e.g., the rating of a restaurants within a predefined radius).

Additionally, in some embodiments, the appointment server system sets(432) a response deadline. In some embodiments the response deadline isa standard response deadline (e.g., 24 hours before the proposedappointment). In some embodiments, the response deadline is specified byappointment preference information provided by one of the participants(e.g., a user specifies that for all appointments where he is aparticipant he wants confirmation of the appointment one week inadvance).

The appointment server system sends (434) an electronic message (e.g.,email or SMS) to the first plurality of participants including aninvitation to the proposed appointment. In some embodiments, once theappointment server system has determined who the participants are for anappointment, where the proposed appointment will take place, and when itwill be, it sends an appointment invitation to the users. In someembodiments, this invitation and all subsequent updates to theinvitation use a multipart email format which includes a text part, anHTML part, and a vcal or ical attachment. The vcal or ical attachmentallows calendaring and email software such as OUTLOOK or GMAIL andGOGGLE CALENDAR to automatically insert the meeting invitation into theparticipant's calendar.

In accordance with some embodiments, for users who have previouslyreceived placeholders to reserve dates on their calendar, the meetinginvitation is sent as an update to the placeholder instead of as a newinvitation. This prevents confusion resulting from having both aplaceholder and a meeting on the user's calendar at the same time. Insome embodiments, the meeting invitations clearly indicate the responsedeadline, and ask users to click a link so that they can accept,decline, or update the meeting. In some embodiments, the appointmentserver system will also recognize the vcal and ical responses foraccept, decline, tentative, and propose new time. Finally, inembodiments where information is available, the meeting invitation willprovide the mobile phone and other contact details of the attendees sothat users can contact one another should issues arise. In alternativeembodiments, the meeting invitation may be relayed and presented to theuser through other means, such as a text message, an instant messengerservice, a social network's messaging capability like FACEBOOK, orthrough a custom client application (e.g., an IPHONE application,ANDROID application, or PALM application).

In accordance with some embodiments, the electronic message is sent bythe appointment server system to a first participant of the plurality ofparticipants includes an indication of a first travel time of the firstparticipant to the first location; and the electronic message sent to asecond participant of the plurality of participants includes anindication of a second travel time of the second participant to thefirst location. For example, for an electronic message (e.g.,invitation) sent to a first participant by the appointment server systemdetermines an approximate first travel time from the location of thefirst participant to the location of the appointment, while anelectronic message sent to a second participant by the appointmentserver system includes a second travel time from the location of thesecond participant to the location of the appointment. In someembodiments the first and second travel times are determined by sendinga query to an external travel time calculation program such as aweb-based mapping program (e.g., GOOGLE MAPS or MAPQUEST). In someembodiments the first and second travel times are determined using aproprietary travel time prediction algorithm.

In some embodiments the provided travel time takes into account the timeof day, day of week, likely traffic conditions at the time of themeeting, etc. In some embodiments this travel time is included in theinvitation (e.g., “travel time to your appointment location is 15minutes”). In some embodiments, driving directions are included alongwith the travel time. In some embodiments a map is included in theinvitation. In some embodiments, at least one of the start time or theend time of the appointment is adjusted for one or more of the pluralityof participants based on the predicted travel time for the respectiveparticipant to the appointment location. In embodiments where theelectronic message includes an automatic calendaring part (e.g., a vcalor ical attachment) the automatic calendaring part includes start andend times adjusted based on the travel time. For example, whenParticipant A and Participant B are participants in an appointment thatis lunch at a restaurant that is located 15 minutes from Participant Aand 9 minutes from Participant B. In this example, the service schedulesParticipant A from 11:45 am to 1:15 pm, and Participant B from 11:51 amto 1:09 pm. It should be understood that, because the travel time iscalculated as a function of the distance that a respective participantneeds to travel to the location of the appointment, in accordance withthis embodiment, the start time and end time of the appointment may bedifferent for each user.

In some embodiments, the electronic messages include an option for aparticipant to invite one or more contacts to join the appointment.

In some embodiments a plurality of appointments are automaticallyscheduled by the appointment server system. In particular, in responseto receiving (402) the appointment preference information from the firstuser, and optionally receiving (420) appointment preference informationfrom a second user, the appointment server system automatically, withouthuman intervention, schedules (436) a second proposed appointment basedon the appointment preference information. In some embodiments, thesecond proposed appointment includes at least a second location, asecond plurality of participants that are distinct from the firstlocation and the first plurality of participants. In some embodiments,the second plurality of participants includes at least one participantthat is not included in the first plurality of participants. In someembodiments, the second appointment includes the first user and a secondcontact of the one or more contacts, and a second date that was notselected by any of the second plurality of participants, wherein thesecond proposed appointment is not a recurrence of the first proposedappointment. As used herein, a recurrence of an appointment is anappointment with the same participants that occurs at regular intervals(e.g., on the same day(s) of the week for a plurality of weeks or thesame day(s) of the month for a plurality of months) for substantiallythe same purpose. Thus, to say that the second appointment is not arecurrence of the first appointment means that the second appointmentincludes one or more of: one participant not included in the firstappointment, a different location, occurs on a different day of theweek, time of day, day of the month, or is for a different purpose. Forexample, having lunch with Participant A at Restaurant X instead ofsocializing with Participant B at Restaurant Y are not recurrences of anappointment even if they occur at the same time (e.g., 12:30 pm) on thesame day of the week (e.g., the first Wednesday and the second Wednesdayin April, respectively) or day of the month (e.g., the 15th of April andthe 15th of May, respectively).

After determining the relevant details for the appointment, as discussedabove in greater detail with reference to scheduling a firstappointment, the appointment server system sends (438) an electronicmessage to the second plurality of participants, including an invitationto the second proposed appointment. It should be understood that inaddition to scheduling a first appointment and a second appointment oneor more additional appointments may be automatically, without humanintervention, scheduled by the appointment server system using theprocess described above, wherein at least a subset of the one or moreadditional appointments does not include a recurrence of any of theprevious appointments. For example, User A provides appointmentpreference information into the appointment server system includingcontact information for three friends and two co-workers. Theappointment server system schedules User A for five lunches over thecourse of the subsequent month, where each lunch is with a respectivefriend or co-worker, and the lunches are scheduled in accordance withthe availability of User A and the friends and co-workers of User A.

After invitations to the proposed appointment have been sent out, theappointment server system waits to receive replies from the invitedparticipants. In some embodiments, the appointment server systemreceives a reply from at least a one of the participants that is anacceptance of the appointment (e.g., “I will attend the appointment”).If the reply is (450) an acceptance then the appointment server systemchecks to see whether it has received a sufficient number of acceptancesto confirm the meeting. If the appointment server system has (452)received a predefined threshold (e.g., a sufficient number or sufficientpercentage) of acceptances to confirm the meeting, then in someembodiments the appointment server system sends (454) an electronicmessage (e.g., an email or SMS) to each of the plurality of participantsincluding a confirmation of the first proposed appointment. In someembodiments the predefined threshold is an acceptance from at least oneparticipant other than the first user. In some embodiments, thepredefined threshold is an acceptance from at least half of theparticipants. In some embodiments, when scheduling an appointment withmore that two participants, the predefined threshold is that more thantwo acceptances must be received. In some embodiments this threshold ispart of the appointment preference information specified by the user.

It should be understood that there are many different possibleembodiments for receiving an acceptance from a participant, includingwithout limitation: an email with a veal or ical response, a selectionon an interactive website, a social networking website application(e.g., a FACEBOOK application), a mobile device application (e.g., anIPHONE application), an instant messaging service, a text message, orany other reply means known to one skilled in the art. In accordancewith some embodiments, if the user includes any notes (e.g., “lookforward to having lunch with you”) with his or her acceptance, thenthese notes are added to the meeting notes for the invitation andincluded in all messages sent to appointment participants regarding thisappointment.

In some embodiments, participants are permitted to provide tentativeresponses (e.g., “maybe”). If the appointment server system receives atentative response from a participant through any of the channelsdescribed above, the participant's response is set to tentative, and, ifthis is different than the user's previous response, a revisedappointment invitation is sent to the participant. If the user includesa note with their response, then revised meeting invitations may bere-sent to all members with the note included.

In some embodiments, a confirmation (e.g., an email stating that theappointment has been confirmed) is sent to each participant along withan updated appointment invitation one week prior to the appointment. Insome embodiments a confirmation is one or more of the following: anemail, a text message, proprietary social network message, instantmessenger message, and/or a notification sent through a custom clientapplication (e.g., an IPHONE application). It should be understood thatdifferent participants for the same meeting may each receive aconfirmation for the same meeting using a different type of confirmationmessage (e.g., a first participant receives a confirmation email and asecond participant receives a text message). It should also beunderstood that a single participant could receive multipleconfirmations for the same meeting using a plurality of the types ofconfirmation messages (e.g., a first participant receives both aconfirmation email and a confirmation text message for the sameappointment). In some embodiments, a confirmation is only sent to theparticipants who have accepted the appointment. In some embodiments, aconfirmation is only sent to the participants who have accepted ortentatively accepted the appointment. In some embodiments theconfirmation is sent to all of the participants who have not declinedthe appointment.

In some embodiments, sending an electronic message to the plurality ofparticipants includes booking (455) a reservation for the appointment atthe first location. For example, when the appointment is for User A andUser B to have lunch at Restaurant X for 12:30 pm on Apr. 15, 2009, theappointment server system makes a reservation at Restaurant X at thespecified time. In some embodiments booking a reservation includescontacting the appointment location directly with the appointmentinformation (e.g., sending an email to Restaurant X). In someembodiments booking a reservation includes using a third partyreservation application (e.g., OPEN TABLE) to create a reservation usingthe appointment information.

In some embodiments, if the appointment server system has not (456)received sufficient acceptances to confirm the appointment, or the replyreceived by the appointment server system was not (458) an acceptance,then the appointment server system does not send a confirmation to theparticipants.

In some embodiments, if the reply indicates (460) an updated location,date or time, the appointment server system resets (462) the responsestatus (e.g., “accept,” “reject,” “tentative” or “no reply” are allreset to “no reply”) for all participants other than the participant whosent the reply with the updated location, date or time, and resends theinvitation to the other participants. For example, Users A and B haveaccepted an appointment when User C proposes a new time for theappointment, and the appointment server system changes the appointmentto a new time and sends out a revised invitation indicating the newtime. In this example, Users A and B have not confirmed that they canattend at the new time, and so their responses are reset to “no reply.”

In some embodiments, when the location, date and time are not (464)updated, the appointment server system checks to see if a note has beenadded by the reply. If a note is (466) added to the appointment by thereply, (e.g., “I'll bring a copy of my proposal to our lunch meeting”),then the appointment server system sends (468) an invitation to allparticipants, where the invitation includes the note, while preservingthe response status for each of the participants. For example, if UsersA and B have accepted an appointment, when User B sends a note for theappointment, the appointment server system sends an invitation to User Aincluding the note, but does not reset the response status of User A,because the details (e.g., time, date, location) of the appointment havenot changed.

In some embodiments, the reply received from the participant indicates(472) a rejection of the first proposed appointment. In someembodiments, the appointment server system marks (474) the rejectingparticipant as unavailable for the appointment time. For example if UserA rejects (e.g., declines) an appointment at 12:30 pm on Apr. 15, 2009,it is likely that User A has a conflicting obligation and thus theappointment server system will avoid attempting to schedule any furtherappointments for that time by marking the participant as unavailable atthat time. In some embodiments, a cancellation message is sent to theparticipant who rejected the appointment in addition to marking theparticipant as unavailable for that time.

In some embodiments other appointment preference information for theparticipant is also updated. For example, if the appointment was for arestaurant, and the participant has previously rejected an appointmentat the same restaurant, the participant's appointment preferenceinformation may be changed to indicate that the user does not like thatrestaurant and thus will not automatically schedule other appointmentsat that location. It should be understood that other appointmentpreference information (e.g., user ratings, time of day preferences,willingness to travel) can be automatically determined in this manner.In some embodiments when a participant rejects an appointment, theparticipant is given a number of options for indicating why theappointment was rejected (e.g., “too early” “too late” “too long” “toofar away” “I don't like the location,” etc.).

In some embodiments when sufficient (476) rejections (e.g., declines)have been received from a predefined threshold of the participants, theappointment server system sends an electronic message to a plurality ofthe participants including a cancellation of the first proposedappointment. In some embodiments the plurality of participants includesall participants for the appointment. In some embodiments, the pluralityof participants includes only the participants for the appointment whohave accepted the appointment. In some embodiments the plurality ofparticipants includes all of the participants for the appointment whohave not rejected the appointment.

In some embodiments the predefined threshold of rejections is reachedif, as a result of the received rejection, there are not at least twoparticipants who can confirm their attendance at the appointment. Whenthe predefined threshold is reached, cancellations (e.g., electronicmessages indicating that the appointment has been cancelled) are sent toall members who have not already received a cancellation. For example,if there are four participants invited to an appointment and one of theparticipants has accepted the appointment while one of the participantshas rejected the appointment, the appointment is not cancelled until theother two participants reject the appointment. In some embodiments, thepredefined threshold of attendees is greater than two, in which case, ifthere are fewer participants than the predefined threshold capable ofaccepting the appointment (e.g., if all attendees who have not rejectedthe appointment accepted it, the appointment would not meet thepredefined threshold of participants), then the appointment iscancelled. In some embodiments, if the rejecting participant included anote with their rejection of the appointment, then this note is includedin all invitations and cancellations associated with the appointment. Insome embodiments the predefined threshold is a percentage of the invitedparticipants (e.g., 25% or 50%) rather than a fixed number. In someembodiments this threshold is part of the appointment preferenceinformation specified by the user.

If the predefined threshold of rejections is (476) met, then acancellation is sent (477) to a plurality of the participants. In someembodiments the plurality of participants is all of the participants, insome embodiments the plurality of participants is all participants whohave not yet received cancellations. If there are not (478) sufficientrejections to cancel the appointment (e.g., the predefined rejectionthreshold has not been met), or if the reply is not (480) a rejectionthe appointment server system checks to see if the response deadline hasbeen reached. If the response deadline has not (482) been reached, thenthe appointment server system waits for additional replies for theappointment or for the response deadline to be reached. In someembodiments the appointment server system periodically checks (e.g.,twice a day) to determine if the response deadline for any of theappointments has been reached.

If the appointment deadline has (484) been reached, the appointmentserver system checks to determine whether there are enough acceptancesto confirm the meeting. If replies indicating an acceptance of theappointment have not (486) been received from at least a predefinedthreshold of the participants (e.g., at least two or at least half ofthe invited participants) before a predefined time period has elapsed(e.g., twenty four hours before the start time of the appointment), theappointment server system sends (477) a cancellation. In someembodiments a cancellation of the appointment is an electronic messageindicating that the appointment has been cancelled. In some embodimentssending the cancellation to a plurality of the participants includessending the cancellation to all participants who have accepted theappointment. In some embodiments sending the cancellation to a pluralityof the participants includes sending the cancellation to allparticipants who have not already received a cancellation for theappointment.

If the appointment server system determines that the response deadlinehas (484) been reached and the appointment server system also determinesthat the predefined threshold of acceptances has (488) been reached(e.g., at least two participants have accepted), then the appointmentserver system sends (454) a confirmation to all parties who haveaccepted, as discussed in greater detail above.

In some embodiments, the appointment server system periodically receiveslocation information (e.g., global positioning service data or wirelesssignal triangulation data) from a client system that is a mobile device.In some embodiments this location information is associated with a timethat the location information was acquired. The appointment serversystem uses this time-specific location information to determine thelikely location of the user at a particular time of day or day of theweek. In some embodiments this likely location information is stored asappointment preference information for the user. For example a user hasa cell phone with a global positioning service (GPS) location module orcell tower triangulation module; at 12:30 pm each day, an application onthe cell phone associated with the appointment server system records thelocation from the GPS module. In this example, the cell phoneperiodically sends this information to the appointment server system andthe appointment server system uses this information to identify theworkplace of the user during the week and the appointment sever usesthat location as the user's location for the purposes of selectinglocations for the user's weekday appointments that occur around 12:30 pm(e.g., lunches with coworkers).

In accordance with some embodiments, reminders are sent as updatedappointment invitations to each participant who has not responded atleast twenty four hours before the response deadline for theappointment. In some embodiments the appointment preference informationincludes a parameter to adjust this reminder period. In someembodiments, the appointment server system uses a built-in alertfunction within a calendar event standard (e.g., the ical or vcalformat) to embed reminders into the appointment invitations. Inaccordance with this embodiment, the electronic calendars of theparticipant will display a reminder to the user at one or morepredetermined times before the appointment. In some embodiments, thepredetermined time is a default predetermined time of a calendarapplication such as OUTLOOK or an online calendar application, such asGOOGLE CALENDAR or YAHOO CALENDAR. In some embodiments the user sets acustom predetermined time. It should be understood that reminders mayalso be sent through other channels including text messages, socialnetworks, instant messengers, and custom client applications like (e.g.,IPHONE applications).

Scoring

Attention is now directed towards FIGS. 5A-5F, which illustrate a methodfor handling appointment preference information in accordance with someembodiments. In accordance with some embodiments, the appointment serversystem constantly re-evaluates the compatibility of users with oneanother for appointments. In accordance with some embodiments, anappointment is selected based on a calculated total score. In someembodiments there are two or more times at which a total score isgenerated. In accordance with some embodiments, the first time is priorto deciding which users to group together for an appointment, and thesecond time happens when deciding on a specific time for an appointmentamong a first plurality of participants.

In accordance with some embodiments, scoring is as a pair-wiseoperation, looking at each user-contact combination. In someembodiments, appointments are automatically, without human intervention,scheduled between more than two participants by employing additionalscoring factors, as described in greater detail below.

In some embodiments, the scoring function builds a total score bycreating a score for several discrete components (e.g., contact score,user rating score, location score, schedule score, behavior score,and/or date elimination score) of a user-contact pair. In someembodiments, the appointment server system multiplies each scorecomponent by a specific coefficient. These coefficients serve thepurpose of weighting different components of the ranking process toimprove the accuracy of the total score in automatically selectingappointments that the participants in the appointment (including theuser) will be more likely to accept. In some embodiments the scorecomponent coefficients are equally weighted. In some embodiments thecoefficients are each weighted based on predefined value that isrepresentative of a predetermined relative importance of each componentscore to the total score (e.g., the time of day is generally twice asimportant as the location). For example, a study of how users interactwith the appointment server system over time may prove that the “userrating component score” is more relevant to arranging the best match foran upcoming appointment. The coefficient for this component can beadjusted upward so that the “user rating component score” has a greaterinfluence on the overall score.

In some embodiments, the appointment server system keeps track of theacceptances and rejections of appointments by the user as well ascomponent scores for each automatically suggested appointment. In someembodiments, the coefficient for each component is an arbitrary valueused to give greater or lesser weight to the individual score component.In some embodiments the coefficients are adjusted on a per-user basisbased on how accurately the different score components have predictedwhether the user will accept the appointment based on past acceptancesof similar appointments. If a score component is a poor predictor ofwhether a user will accept an appointment, then the coefficient isreduced. If a score component is a good predictor of whether a user willaccept an appointment, the coefficient is increased.

It should be understood that a variety of statistical models fordetermining whether a score component is a good predictor of a useraccepting an appointment may be used. Such statistical models would bereadily apparent to one having ordinary skill in the art. While thisexample suggests a dependent variable of whether a user accepts orrejects a meeting, it should be understood that a different dependentvariable may be employed when optimizing the coefficient weights. Forexample, explicit user ratings or feedback (e.g. a follow up emailasking the user if they enjoyed their lunch), may be used instead. Insome embodiments, the coefficient is determined using a multiple-xregression based on least squares. In some embodiments, users controltheir own coefficients so that they can adjust how the scoring processevaluates the appointment preference information associated with theuser, e.g., by indicating an importance for each category 1-10 or bymoving a slider between “less important” and “more important.” In someembodiments, the component scores are adjusted using the coefficientsand are combined to generate the total score for the user-contact pair,as described in greater detail below.

In some embodiments, the appointment server system generates a contactscore (501) for each user-contact pair. In accordance with someembodiments, the appointment server system first checks whether thecontact of the user-contact pair has provided a rating for the user. Ifthe contact has not (502) provided a rating for the user, a defaultscore is used (503) for the contact rating component. The default scoreis adjusted (504) using the contact score coefficient

For example, a default score may be set to “rarely” or an ordinalequivalent of “2” by the appointment server system in the absence ofbetter information. In some embodiments a default score for unratedcontacts is set by a user. For example, one user may prefer that all thecontacts that she has not given a rating be given a default value of“one appointment only” or an ordinal equivalent of “1”. In someembodiments, defaults contact scores are derived from other availableinformation. For example, the appointment server system may have accessto the user's “social graph,” meaning the information about whatcontacts the user is connected to via different social networks (e.g.,friends, family coworkers, social contacts) and the number of contacts(e.g., a contact is connected to the user as a friend and a co-worker)and the degree of contacts (the contact is a friend of a friend of auser, or the contacts work for the same company). In some embodimentsthe appointment server system generates an “index of connectedness” forthe user-contact pair, using factors such as the number of sharedcontacts, or duration of time worked for a common employer, or theamount of time spent at the same school, and the like. In someembodiments, if a contact is connected to the user on multiple socialnetworking websites (e.g., the contact is a friend of the user's onFACEBOOK and on LINKED IN) then the “index of connectedness” is higherfor that contact. In this embodiment, the appointment server system usesthe “index of connectedness” to set a default contact score for eachuser-contact pair, or to adjust the contact score for each user-contactpair.

In accordance with some embodiments, if the contact has (505) provided arating for the user, then this rating is used for the component scoreusing the following logic. If the contact has indicated that they never(506) want to have an appointment with the user, then the total score isset (507) to zero and scoring is completed for this user-contact pair.If the contact rating of the user is not (508) “never,” but the contacthas (509) requested an appointment frequency cap, such as “oneappointment only,” and this has (510) been exceeded, then the totalscore is set (507) to zero and scoring process is terminated for thisuser-contact pair. Otherwise, if there is no (511) requested frequencycap or the requested frequency cap has not (512) been exceeded, thescore for this component is generated (514) as a function of thecontact's desired frequency to meet with the user. In accordance withsome embodiments, when the contact appointment frequency indicates thatappointments should be scheduled frequently with this user (e.g., arating of “often”), the contact rating score is set to 100, while whenthe contact appointment frequency indicates that appointments should bescheduled infrequently (e.g., a rating of “rarely”), the contact ratingscore is set to 25. In accordance with some embodiments component scoreis adjusted (504) (e.g., multiplied) by the contact rating coefficientand combined with (e.g., added to) the total score.

In accordance with some embodiments, a user rating score is calculated(516). If the user has indicated that they never (518) want to have anappointment with the contact, then the total score is set (519) to zeroand scoring is terminated. In some embodiments, even if the user ratingof the contact is (520) a value other than never, the user requested afrequency cap, such as “one appointment only”, and this has beenexceeded (521), then the total score is set (519) to zero and scoring isterminated. In accordance with some embodiments, even if the frequencycap has not (522) been exceeded, if the user and the contact alreadyhave an appointment scheduled (524) at any point in the future, thetotal score is set (519) to zero and scoring is terminated. Inaccordance with some embodiment if there is no (525) proposedappointment (e.g., the user and the contact are not yet scheduled for alunch) and instead a default score is used (526) for the user ratingcomponent score, parallel to the default rating score described ingreater detail above.

In accordance with some embodiments, if the total score is not set tozero, the appointment server system creates a component score by firstcalculating (531) the ideal appointment frequency for the user-contactpair. As one example, illustrated in FIG. 6A, the user has asked to havea lunch appointment with 2 contacts “once only”, 3 contacts “rarely”, 1contact “average”, and 4 contacts “often”, as noted in column A 602 andcolumn B 606. Column C 608 is a multiplier which is used to give greaterimportance to contacts with higher preferred appointment frequencies. Inthis example, the multiplier used in Column C is an arbitrary value thatcan be adjusted to widen or tighten the meaning of the user ratings. Forexample, if the multiplier for “often” were increased to 5, then allusers who specified an appointment frequency of one or more contacts as“often” would be scheduled to meet with those contacts more frequentlyat the expense of contacts with a lower appointment frequency in theother categories. Column D 610 represents the weight for a givenappointment frequency, such as “rarely” or “often”, and is calculated bymultiplying B×C. Column E 612 shows the desired distribution ofappointments for a contact within a given category and is calculated asC divided by the total of D. For example, this user will be scheduledwith each “rarely” rated contact for 6.74% of his/her appointments.Column F 614 is the inverse of Column E (1/E) and represents the idealappointment (e.g., lunch) frequency measured as the number ofappointments (e.g., lunches) to wait before scheduling anotherappointment (e.g., lunch) between the user and the contact. Continuingthe example, the user should be scheduled for an appointment with each“rarely” rated contact once for every twenty two times that the user isscheduled for an appointment. Similarly, each contact who has been rated“often” should be seen approximately every seven appointments (e.g.,lunches).

Once this ideal appointment frequency for the user-contact pair iscalculated, the appointment server system generates (532) a user ratingcomponent score by comparing the ideal frequency to the frequency thatwould result if an appointment were scheduled in a week. The formula 616in FIG. 6B illustrates one embodiment of such a comparison, which beginsby determining the number of appointments (e.g., “[t_(UC)×a/m] in FIG.6B) the user has had since the last appointment including both the userand the contact. In some embodiments, this value is determined bylooking at the last date that the user and the contact had anappointment, and deriving the difference, in months (e.g., “t_(UC)” inFIG. 6B), between the last appointment date and one week from thecurrent date (e.g., the scoring process is being run on Apr. 10, 2009,the date one week from the current date is Apr. 17, 2009). This timeperiod (e.g., “t_(UC)” in FIG. 6B) is multiplied by the average numberof appointments that the user has each month (e.g., “a/m” in FIG. 6B).

For example, if the user and the contact last had an appointment 5 weeksago, then the time between then and one week from now is 6 weeks, or 1.5months (e.g. t_(UC)=1.5 months in FIG. 6B). Assume that the user has 4appointments per month on average (e.g. a/m=4 in FIG. 6B), meaning that4×1.5=6 lunches have passed since the user and the contact had lunch(e.g. [t_(UC)×a/m]=6 in FIG. 6B). Then the formula takes the differencebetween this and the ideal appointment frequency (e.g., “I” in FIG. 6B)for the contact. So, assume that this contact is in the “average” ratingcategory, with an ideal frequency to meet every 10 appointments (e.g.I=10 in FIG. 6B). Thus, subtracting 10 (I) from 6 ([t_(UC)×a/m]) resultsin a −4, which is then added to some average score value (e.g., “S_(A)”in FIG. 6B), such as 50 to arrive at a component score of 46. One cansee that the more time passes since the last appointment between theuser and the contact, the higher this score will become. The schedulecomponent score (e.g., “S” in FIG. 6B) is modified (e.g., multiplied) bythe user rating coefficient and combined with (e.g., added to) the totalscore.

It would be readily understood by one having ordinary skill in the artthat any number of alternative methods can be used to decide how to bestmatch the potential participants for a given appointment to achieve athe desired result. The most simple of these is randomization. The mostcomplex of these, similar to the embodiment described above, attempts todraw on a user's preferences and translate those preferences into apattern of appointments with different participants.

In accordance with some embodiments, a location score (530) iscalculated. In accordance with some embodiments if either the user'slocation is unknown (532) or the users location is known (536) and thecontact's location (538) is unknown, then a default value is assigned(533) for the location component. In some embodiments the default scoreis set to a midpoint (e.g., 50 when the score range is 0 to 100 for eachcomponent score). In accordance with some embodiments the location scoreis modified (e.g., multiplied) by a location coefficient and combinedwith (e.g., added) to a total score.

In some embodiments, if the location of the user is known (536) and thelocation of the contact is known (539), then the distance that eachparticipant (e.g., the user and the contact) will be required to travelto get to the appointment location is calculated. This process begins bycalculating (540) the distance between the user and the contact. If thedistance exceeds (543) a maximum distance threshold (e.g., is too far),for example 10 miles (or the sum of the maximum willingness to travelspecified by the user and the contact), then the total score is set(544) to zero and the scoring process is terminated for thisuser-contact pair. In accordance with some embodiments, the maximumdistance threshold is represents a distance beyond which it is notfeasible for two parties to meet one another for an appointment, even ifeach participant traveled halfway. It should be understood that in someembodiments the maximum threshold distance varies with the type ofappointment (e.g., 5 miles for a lunch, 10 miles for a dinner, and 50miles for a day-long retreat). For simplicity, this embodiment uses afixed distance of 10 miles. In some embodiments, this maximum distancethreshold could vary by geography, and could be adjusted for things likelocal speed limits, common transportation options, expected trafficaround the time of the appointment, as well as travel expenses (e.g.,gas or public transportation costs).

In some embodiments, the appointment server system determines (546) anepicenter for the appointment (e.g., an approximate location for theappointment). The location of an epicenter can be determined based on anumber of factors including whether the user or the contact traveledfurther the last time the user and the contact had an appointment. Forexample, the appointment server system could alternate between makingthe user travel further and making the contact travel further. In someembodiments, once the appointment server system has determined anepicenter for the appointment, it then evaluates the distance that theuser needs to travel against the user's travel preferences. If thedistance is greater (549) than the user is willing to travel (e.g., toofar), then the component score is set to zero. Otherwise (550), thelocation component score is generated (552) as a function of thedistance traveled, with a smaller distance scoring higher. For example,if an epicenter is a midpoint between two users who are relatively farfrom each other, and one user is only willing to travel 25 miles for alunch “rarely”, and did so last week, then the score would be set tozero until enough time had passed that the user had the appetite totravel that far again.

One example of a simple function for calculating this score is to startwith a score of 100 and deduct 1 point for every mile that either usermust travel. For example, if the travel distance that each user needs totravel is 0 because both users work in the same building, and thatbuilding has a café, then the component score will be set to 100 by theappointment server system. On the other hand, if each user must drive 25miles to a restaurant located between them, then the component score isset to 50. One having ordinary skill in the art would readily appreciateother methods for calculating such a score. In accordance with someembodiments, the component score is modified (e.g., multiplied) (534) bythe location coefficient and combined with (e.g., added to) the totalscore.

In accordance with some embodiments a schedule score (554) iscalculated. In accordance with some embodiments, if the user'savailability is unknown (556), then the total score is set (558) to zeroand the scoring process is terminated for this user-contact pair. If theuser's schedule is known (560) and the contact's availability is unknown(562), then a default value is used for the schedule component score. Inthis embodiment, the default value is set (564) to the midpoint of thepotential range for this component score; (e.g., 50 when the score rangefrom 0 to 100). In accordance with some embodiments, the schedule scoreis modified (e.g., multiplied) (566) by a schedule coefficient andcombined with (e.g., added to) the total score.

In accordance with some embodiments, if the user's schedule is known(560) and the contact's schedule is known (568) but the user and thecontact do not (569) share any common available appointment times, thenthe total score is set (558) to zero and the scoring process ends.Otherwise if the user and the contact do share (570) at least one commonavailable appointment time, a score is generated based on the nearestintersection of availability between the two participants (e.g., theuser and the contact). In some embodiments, higher scores are given todates that occur closer to the current date within a predetermined timeperiod (e.g., one week or one month) from the date on which the score isbeing calculated. As one example, the predetermined time period is sevendays from the current date through sixty days after the current date. Inthis example, if the first intersection of availability between the twoparticipants is on day twelve of the predetermined period, the schedulescore is generated by multiplying 100 times 1 minus the fraction of thenumber of days to the first intersection divided by the range of thedays considered. In this case, this would be 100*{1−[(12−7)/(60−7)]}, or90.56. Thus, in some embodiments (as in this example) appointments whichare scheduled in the near future are given a higher score thanappointments which are scheduled further in the future.

In accordance with some embodiments, a behavior score (574) iscalculated. In accordance with some embodiments the appointment serversystem considers the behavior of the user, the contact, or both whengenerating a score for a given user-contact pair. In some embodimentsthe historic number (or percentage) of rejections and acceptances forappointments scheduled between the specific user-contact pairing is usedto generate (576) a behavior score. In accordance with some embodimentsthe score is adjusted (578) based on one or more of the participants'number (or percentage) of rejection of appointments scheduled on aparticular day of week such as Wednesdays, or the number (or percentage)of rejections for appointments scheduled on a set date or range of dateswithin each month (e.g., the first full week of the month). In someembodiments the score is adjusted (580) based on one or more of theparticipants' historic acceptances and rejections of appointments at aparticular location. It should be understood that other user attributesmay also be considered, such as how long the user has used theappointment server system, whether the user has set up a recurringavailability or has only selected individual dates for his/heravailability, and whether the user is generally responsive to meetingrequests. In some embodiments, the behavior score is modified (e.g.,multiplied) (582) by a behavior coefficient and combined with (e.g.,added to) the total score.

In accordance with some embodiments, a score is evaluated twice. Thefirst time, a score is calculated in order to assess the generalcompatibility of each user pair without regard to scheduling a specificdate. The scheduling batch then uses the results of these user pairscores to decide which user-contact pairs are the best matches for anappointment, at which point the score is re-evaluated with a specificdate planned for each user pair. Sequencing the score creation andscheduling in this way ensures that appointment dates are not booked forpoor matches ahead of better matches. In accordance with someembodiments if a score is being generated for a specific date thespecific date component is evaluated (584). If a score is not (586)being generated for a specific date, then the total score is recorded(587) and the scoring process ends. In accordance with some embodiments,this evaluation has a binary outcome in which the total score willeither be set to zero and the scoring process for this user-contact pairwill be terminated, or it will allow the scoring process to continue. Ifthe appointment is being calculated for a specific date (588), and theappointment server system has already tried to schedule (590) anappointment between the user and the contact for this date, and thatappointment was cancelled, then the total score is set (591) to zero andthe scoring process is terminated. Similarly, if the appointment serversystem has not (592) already tried to schedule an appointment betweenthe user and the contact for this date, but the specific date is (594) aholiday or is near a holiday for either of the participants, then theappointment server system will set (591) the total score to zero and thescoring process is terminated. Otherwise if the appointment serversystem has not (592) previously tried to schedule the user and thecontact for an appointment on the specific date and the date is not(596) holiday for any of the participants, then the total score isrecorded (587).

In accordance with some embodiments, the total score for theuser-contact pair represents the sum of all the individual componentscores multiplied by each of the component score coefficients. In someembodiments, the total score for the appointment between theuser-contact pair at the selected location on the selected date isstored on the appointment server system. If the total is zero, then theappointment server system will not schedule an appointment between thetwo users.

Group Rating

In accordance with some embodiments, appointments are scheduled betweengroups including three or more participants. Creating a score for anappointment for a group of three or more participants is similar to theevaluation of user-contact pairs, discussed in greater detail above withreference to FIGS. 5A-5F. In one embodiment, the contact is simplyreplaced with the group so that a score is created for each user-grouppair. In accordance with some embodiments, a group is treated as asingle entity and the appointment server system assesses a user'slikelihood of accepting an invite for the group rather than the user'slikelihood of accepting an invite from each other member of that group.For example, assume that User A belongs to a Group 123. The appointmentserver system can generate a score for the “User A-Group 123” pair. Inaccordance with some embodiments, this score is used as to determine thelikelihood that the user will accept an appointment with the group(e.g., how important the group is to the user). In accordance with someembodiments, group appointments are created by trying to bestaccommodate the top scoring group-member pairs, up to the maximumappointment size (e.g., a size specified by one or more of the groupparticipants or a default group size).

In accordance with some embodiments, the “contact rating score”described in greater detail above with reference to FIG. 5A is a “memberrating score”, and is determined by the rating that the group membergave for the group. This is similar to the “contact rating score”described previously, in which a user can rate a contact in terms of howfrequently the user would like to have an appointment with that contact.In the same way, a user can indicate how frequently they want toparticipate in (e.g., have an appointment with) each group for whichthey are a member. In some embodiments the frequency rating is turnedinto a score where “frequently” corresponds to a component score of 100,while “rarely” corresponds to a component score of 25. In someembodiments, these scores are modified (e.g., multiplied) by a memberrating coefficient and combined with (e.g., added to) the total scorefor the group-member pair.

In accordance with some embodiments, the “user rating component”described in greater detail above with reference to FIG. 5B is a “grouprating component” and determines the ideal appointment frequency for itsmembers based on group data such as the size of the group, the maximumsize for each appointment within that group, the number of concurrentappointments, and the like. In some embodiments the appointment serversystem compares the ideal appointment frequency to the actualappointment frequency for each member to arrive at an appropriatecomponent score for the specific group-member pair.

In accordance with some embodiments the location component score iscalculated as described in greater detail above with reference to FIG.5C, the scoring process evaluates whether any geographic constraints areplaced on the group by the group owner (e.g., a user who creates a groupwith predetermined parameters and potential participants). Inembodiments where there is no group owner or the group owner has notplaced any geographical constraints on the group location, theappointment server system selects a location epicenter for the groupbased on the geographic distribution of its members. In some embodimentsthe group location scoring progress avoids selecting the same epicenterfor a currently proposed appointment as was selected for a previouslyproposed appointment (or previously scheduled appointment). Inaccordance with some embodiments each group member's travel preferencesare compared to the selected epicenter to come up with an appropriatelocation component score for each user-group pairing.

In accordance with some embodiments, if the group owner has provideddate constraints for the group, then the appointment server system willselect a potential date for the next group appointment based on thisinformation. Otherwise, if there is no group owner or the group ownerhas not provided date constraints, the appointment server system willselect a date based on the availability of all the group members. Inaccordance with some embodiments the appointment server system assessesindividual user-group pairs to come up with an individual componentscore for each participant.

In accordance with some embodiments the group scheduling process takesinto account participant behaviors (e.g., historical acceptance orrejection of previous appointments with the group) as discussed ingreater detail above, with reference to FIG. 5E.

Other Features

In accordance with some embodiments, the appointment server systemprovides suggestions to a user as to potential participants for aparticular appointment. In accordance with some embodiments, thesuggestions are based on information attained through user-grantedaccess to social networks or contact lists, which provides theappointment server system with information about which contacts of theuser are likely participants appointments (e.g., lunches) with the user.For example, assume that users A and B have given the appointment serversystem access to their online address book or social network. As aresult of that, the appointment server system sees that both A and Bhave contacts C and D in common, then the appointment server system cansuggest that A and B have an appointment with C and/or D.

In accordance with some embodiments, the appointment server systemallows individual potential appointment locations (e.g., restaurants,coffee shops, rental spaces) to offer access to the appointment serversystem to their customers in order to encourage their customers toschedule appointments at their establishment. This service can beoffered through a website of the appointment location as an embeddablewidget which accesses the appointment server system, or through any of avariety of white-labeled or co-branded applications designed for socialnetworks like FACEBOOK or MYSPACE, or for platforms such as IPHONE,ANDRIOD, or PALM.

In accordance with some embodiments the appointment server system isconfigured to display advertising to a user and other participantsduring the appointment scheduling process. In some embodiments,restaurants and other potential appointment locations can purchaseadvertising from the operator of the appointment server system to ensurethat their establishment appears in a featured position at key pointsthroughout the appointment scheduling process (e.g., when the user issetting up their preferred appointment locations or when the user isselecting a restaurant for a particular appointment). In accordance withsome embodiments the appointment server system is configured to providediscounts or coupons in the appointment invitations to encourage usersto change the location for the appointment to a location with a provideddiscount or coupon. In a further embodiment, the appointment serversystem is configured to allow appointment locations (e.g., restaurants)to purchase the right to be the default location for searches with anepicenter within a predetermined distance from the location (e.g. onemile). For example, Restaurant X could purchase the right to be thedefault restaurant for every automatically scheduled appointment withinone mile of the location of the Restaurant X.

Although FIGS. 1-3 show various computing devices including an“appointment server system,” and a “client system,” FIGS. 1-3 areintended more as functional description of the various features whichmay be present in a set of servers than as a structural schematic of theembodiments described herein. In practice, and as recognized by those ofordinary skill in the art, items shown separately could be combined andsome items could be separated. Each of the above elements identified inFIGS. 2-3 may be stored in one or more of the previously mentionedmemory devices, and corresponds to a set of instructions for performinga function described above. The above identified modules or programs(i.e., sets of instructions) need not be implemented as separatesoftware programs, procedures or modules, and thus various subsets ofthese modules may be combined or otherwise re-arranged in variousembodiments. For example, some items shown separately in FIG. 2 could beimplemented on a single server and single items could be implemented byone or more servers. Similarly, some items shown separately in FIG. 3could be implemented on a single server and single items could beimplemented by one or more servers. The actual number of computingdevices used to implement an appointment server system or a clientsystem and how features are allocated among them will vary from oneimplementation to another, and may depend in part on the amount of datatraffic that the system must handle during peak usage periods as well asduring average usage periods.

The foregoing description, for purpose of explanation, has beendescribed with reference to specific embodiments. However, theillustrative discussions above are not intended to be exhaustive or tolimit the invention to the precise forms disclosed. Many modificationsand variations are possible in view of the above teachings. Theembodiments were chosen and described in order to best explain theprinciples of the invention and its practical applications, to therebyenable others skilled in the art to best utilize the invention andvarious embodiments with various modifications as are suited to theparticular use contemplated.

1. A method for appointment scheduling, comprising: at an appointmentserver system including one or more processors and memory: obtaininggroup appointment preference information for an appointment group,wherein the appointment group includes a plurality of users who aremembers of the appointment group; after obtaining the group appointmentpreference information scheduling, based on the group appointmentpreference information, a plurality of concurrent appointmentsassociated with the appointment group including a first appointment anda second appointment; and sending invitations to the plurality ofappointments to members of the appointment group, wherein sending theinvitations includes: sending, to a first subset of users who aremembers in the appointment group, invitations to a first appointment ata first appointment time; and sending, to a second subset users who aremembers in the appointment group, invitations to a second appointment ata second appointment time, wherein the first appointment time at leastpartially overlaps the second appointment time.
 2. The method of claim1, wherein locations for the plurality of concurrent appointments areselected automatically, without human intervention.
 3. The method ofclaim 1, wherein the plurality of concurrent appointments are scheduledautomatically, without human intervention.
 4. The method of claim 3,wherein scheduling the plurality of concurrent appointments includes,for the first appointment: determining locations of the first subset ofusers; and selecting a location for the first appointment based on thelocations of the first subset of users.
 5. The method of claim 1,wherein: the appointment group includes a respective number of members;the first appointment has a maximum number of participants that issmaller than the respective number; and the second appointment has amaximum number of participants that is smaller than the respectivenumber.
 6. The method of claim 1, wherein the group appointmentpreference information includes information about user preferences of arespective user determined based on responses, by the respective user,to prior invitations for prior appointments associated with theappointment group.
 7. The method of claim 1, wherein the groupappointment preference information includes information provided by arespective user who is a member of the appointment group, wherein theinformation provided by the respective user includes one or more of: anavailability of the respective user including a plurality of times whenthe respective user is available for an appointment, a location of therespective user, a rating of one or more other users, travel preferencesof the respective user, appointment location preferences of therespective user, and dietary restrictions/preferences of one therespective user.
 8. The method of claim 1, wherein the group appointmentpreference information includes information provided by an organizer ofthe appointment group that specifies parameters for appointmentsassociated with the appointment group, wherein the parameters includeone or more of: a number of participants for appointments, a frequencyof appointments, geographical boundaries for appointments, and a numberof concurrent appointments to schedule.
 9. The method of claim 1,wherein: the group appointment preference information specifies aperiodic interval for appointments associated with the appointmentgroup; the first appointment and the second appointment are scheduled ona first date; and the method further comprises: selecting a second datebased on the first date and the periodic interval; scheduling, on thesecond date, an additional plurality of appointments associated with theappointment group based on the group appointment preferences, includinga third appointment and a fourth appointment, wherein the thirdappointment is concurrent with the fourth appointment; and sendinginvitations to the additional plurality of appointments to members ofthe appointment group, wherein sending the invitations includes:sending, to a third subset of users who are members of the appointmentgroup, invitations to the third appointment at a third appointment time;and sending, to a fourth subset of users who are members of theappointment group, invitations to the fourth appointment at a fourthappointment time, wherein the third appointment time at least partiallyoverlaps the fourth appointment time.
 10. The method of claim 1, furthercomprising: receiving replies from a plurality of the first subset ofusers; and in response to receiving the replies: when replies indicatingan acceptance of the first appointment have been received from apredefined number of the first subset of users, sending electronicmessages to the first subset of users including a confirmation of thefirst appointment.
 11. The method of claim 1, wherein: the firstappointment is scheduled to occur at a first location; the invitationssent to a first user of the first subset of users includes an indicationof a first travel time of the first user to the first location; and theinvitations sent to a second user of the first subset of users includesan indication of a second travel time of the second user to the firstlocation.
 12. The method of claim 11, wherein the indication of thetravel time of a respective user to the first location includes acalendar appointment with a start time that is the first time adjustedby a travel time of the respective user to the first location.
 13. Anappointment server system, comprising: one or more processors; memory;and one or more programs, wherein the one or more programs are stored inthe memory and are configured to be executed by the one or moreprocessors, the one or more programs comprising instructions for:obtaining group appointment preference information for an appointmentgroup, wherein the appointment group includes a plurality of users whoare members of the appointment group; after obtaining the groupappointment preference information scheduling, based on the groupappointment preference information, a plurality of concurrentappointments associated with the appointment group including a firstappointment and a second appointment; and sending invitations to theplurality of appointments to members of the appointment group, whereinsending the invitations includes: sending, to a first subset of userswho are members in the appointment group, invitations to a firstappointment at a first appointment time; and sending, to a second subsetusers who are members in the appointment group, invitations to a secondappointment at a second appointment time, wherein the first appointmenttime at least partially overlaps the second appointment time.
 14. Thesystem of claim 13, wherein: the appointment group includes a respectivenumber of members; the first appointment has a maximum number ofparticipants that is smaller than the respective number; and the secondappointment has a maximum number of participants that is smaller thanthe respective number.
 15. The system of claim 13, wherein the groupappointment preference information includes information about userpreferences of a respective user determined based on responses, by therespective user, to prior invitations to prior appointments associatedwith the appointment group.
 16. The system of claim 13, wherein: thegroup appointment preference information specifies a periodic intervalfor appointments associated with the appointment group; the firstappointment and the second appointment are scheduled on a first date;and the one or more programs further comprise instructions for:selecting a second date based on the first date and the periodicinterval; scheduling, on the second date, an additional plurality ofappointments associated with the appointment group based on the groupappointment preferences, including a third appointment and a fourthappointment, wherein the third appointment is concurrent with the fourthappointment; and sending invitations to the additional plurality ofappointments to members of the appointment group, wherein sending theinvitations includes: sending, to a third subset of users who aremembers of the appointment group, invitations to the third appointmentat a third appointment time; and sending, to a fourth subset of userswho are members of the appointment group, invitations to the fourthappointment at a fourth appointment time, wherein the third appointmenttime at least partially overlaps the fourth appointment time.
 17. Anon-transitory computer readable storage medium storing one or moreprograms, the one or more programs comprising instructions, which whenexecuted by a computer system with one or more processors, cause thecomputer system to: obtain group appointment preference information foran appointment group, wherein the appointment group includes a pluralityof users who are members of the appointment group; after obtaining thegroup appointment preference information schedule, based on the groupappointment preference information, a plurality of concurrentappointments associated with the appointment group including a firstappointment and a second appointment; and send invitations to theplurality of appointments to members of the appointment group, whereinsending the invitations includes: sending, to a first subset of userswho are members in the appointment group, invitations to a firstappointment at a first appointment time; and sending, to a second subsetusers who are members in the appointment group, invitations to a secondappointment at a second appointment time, wherein the first appointmenttime at least partially overlaps the second appointment time.
 18. Thenon-transitory computer readable storage medium of claim 17, wherein:the appointment group includes a respective number of members; the firstappointment has a maximum number of participants that is smaller thanthe respective number; and the second appointment has a maximum numberof participants that is smaller than the respective number.
 19. Thenon-transitory computer readable storage medium of claim 17, wherein thegroup appointment preference information includes information about userpreferences of a respective user determined based on responses, by therespective user, to prior invitations to prior appointments associatedwith the appointment group.
 20. The non-transitory computer readablestorage medium of claim 17, wherein: the group appointment preferenceinformation specifies a periodic interval for appointments associatedwith the appointment group; the first appointment and the secondappointment are scheduled on a first date; and the one or more programsfurther comprise instructions which cause the computer system to: selecta second date based on the first date and the periodic interval;schedule, on the second date, an additional plurality of appointmentsassociated with the appointment group based on the group appointmentpreferences, including a third appointment and a fourth appointment,wherein the third appointment is concurrent with the fourth appointment;and send invitations to the additional plurality of appointments tomembers of the appointment group, wherein sending the invitationsincludes: sending, to a third subset of users who are members of theappointment group, invitations to the third appointment at a thirdappointment time; and sending, to a fourth subset of users who aremembers of the appointment group, invitations to the fourth appointmentat a fourth appointment time, wherein the third appointment time atleast partially overlaps the fourth appointment time.